#include <iostream>
#include <vector>
#include <unordered_map>
using namespace std;

// 检查点是否与周围 8 个相邻像素的颜色差充分大
bool checkDifference(const vector<vector<int>>& image, int i, int j, int TOL) {
    int rows = image.size();
    int cols = image[0].size();
    int color = image[i][j];
    for (int di = -1; di <= 1; ++di) {
        for (int dj = -1; dj <= 1; ++dj) {
            if (di == 0 && dj == 0) continue;
            int ni = i + di;
            int nj = j + dj;
            if (ni >= 0 && ni < rows && nj >= 0 && nj < cols) {
                if (abs(image[ni][nj] - color) <= TOL) {
                    return false;
                }
            }
        }
    }
    return true;
}

int main() {
    int M, N, TOL;
    cin >> M >> N >> TOL;

    vector<vector<int>> image(N, vector<int>(M));
    unordered_map<int, int> colorCount;

    // 读取图像像素颜色并统计颜色出现次数
    for (int i = 0; i < N; ++i) {
        for (int j = 0; j < M; ++j) {
            cin >> image[i][j];
            colorCount[image[i][j]]++;
        }
    }

    vector<pair<pair<int, int>, int>> uniquePoints;

    // 检查每个像素是否满足条件
    for (int i = 0; i < N; ++i) {
        for (int j = 0; j < M; ++j) {
            int color = image[i][j];
            if (colorCount[color] == 1 && checkDifference(image, i, j, TOL)) {
                uniquePoints.emplace_back(make_pair(j + 1, i + 1), color);
            }
        }
    }

    // 输出结果
    if (uniquePoints.size() == 0) {
        cout << "Not Exist" << endl;
    } else if (uniquePoints.size() > 1) {
        cout << "Not Unique" << endl;
    } else {
        auto point = uniquePoints[0];
        cout << "(" << point.first.first << ", " << point.first.second << "): " << point.second << endl;
    }

    return 0;
}    